跳到主要内容

行为型模式-模板方法模式

模板方法模式

模板方法模式就是定义一个算法的骨架,将算法分解为一系列步骤, 然后将这些步骤改写为方法, 最后在 “模板方法” 中依次调用这些方法。

classDiagram AbstractClass <|-- ConcreteClassA AbstractClass <|-- ConcreteClassB AbstractClass: <<abstract>> AbstractClass: +templateMethod() AbstractClass: +primitiveOperationA() AbstractClass: +primitiveOperationB() ConcreteClassA: +primitiveOperationA() ConcreteClassA: +primitiveOperationB() ConcreteClassB: +primitiveOperationA() ConcreteClassB: +primitiveOperationB()

就是定义一个抽象模板,这个模板按顺序调用方法

public abstract class AbstractClass {
public abstract void primitiveOperationA();
public abstract void primitiveOperationB();

// 模板方法禁止重写
// 它里面给出了逻辑的骨架,而逻辑的组成是一些相应的抽象操作,它们都推迟到子类实现
public final void templateMethod() {
System.out.println("模板固定的操作");
primitiveOperationA();
primitiveOperationB();
}
}

具体的实现类

public class ConcreteClassA extends AbstractClass {
@Override
public void primitiveOperationA() {
System.out.println("具体类 A 方法的实现 A");
}

@Override
public void primitiveOperationB() {
System.out.println("具体类 A 方法的实现 B");
}
}
// ConcreteClassB 同理...
// Demo
public static void main(String[] args) {
AbstractClass c = new ConcreteClassA();
c.templateMethod();
}